std::array::operator[]
#include <array>
reference operator[] (size_type n);
const_reference operator[] (size_type n) const;
Truy cập trực tiếp tới các phần tử của mảng.
Tham số
n
- Vị trí của phần tử cần truy cập (kiểu
size_t
). Vị trí này phải nằm trong phạm vi của mảng.
Giá trị trả về
- Trả về một tham chiếu (reference) tới phần tử tại vị trí
n
.- Phiên bản hằng (const): Trả về tham chiếu hằng (
const T&
). - Phiên bản không hằng (non-const): Trả về tham chiếu không hằng (
T&
).
- Phiên bản hằng (const): Trả về tham chiếu hằng (
Đặc điểm
- Toán tử
[]
cho phép truy cập trực tiếp các phần tử của std::array thông qua chỉ số. - Không giống như phương thức
.at()
, toán tử[]
không kiểm tra giới hạn chỉ số. Việc truy cập ngoài phạm vi sẽ dẫn đến hành vi không xác định (undefined behavior). - Khi sử dụng trên một đối tượng std::array hằng (
const
), phiên bảnconst
của toán tử được gọi và trả về một tham chiếu hằng tới phần tử. - Vì không kiểm tra giới hạn, toán tử
[]
nhanh hơn so với.at()
. - Chỉ sử dụng
operator[]
nếu chắc chắn chỉ số nằm trong phạm vi hợp lệ. - Sử dụng
.at()
trong trường hợp cần bảo vệ mã khỏi lỗi truy cập ngoài phạm vi.
Ví dụ
Truy cập và gán giá trị
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
// Truy cập phần tử
std::cout << "Phần tử đầu tiên: " << arr[0] << "\n";
// Gán giá trị cho phần tử
arr[1] = 10;
std::cout << "Phần tử thứ hai sau khi gán: " << arr[1] << "\n";
return 0;
}
Sử dụng trên đối tượng hằng
#include <iostream>
#include <array>
int main() {
const std::array<int, 3> arr = {1, 2, 3};
// Truy cập phần tử (chỉ đọc)
std::cout << "Phần tử thứ ba: " << arr[2] << "\n";
// arr[2] = 10; // Lỗi: Không thể gán giá trị cho đối tượng hằng
return 0;
}
Các hàm liên quan
at | Truy xuất phần tử tại vị trí chỉ định |
front | Truy xuất phần tử tại vị trí đầu tiên |
back | Truy xuất phần tử tại vị trí cuối cùng |